﻿using LiteStep.Currencies;
using LiteStep.Exchanges;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LiteStep.Conversions
{
	public interface IConversionManager
	{
		IEnumerable<IConversion<TFrom, TTo, IExchange<IExchange>>> Get<TFrom, TTo>()
			where TFrom : ICurrency
			where TTo : ICurrency;

		IConversion<TFrom, TTo, TOn> Get<TFrom, TTo, TOn>()
			where TFrom : ICurrency
			where TTo : ICurrency
			where TOn : IExchange;

		IConversion<TFrom, TTo, IExchange<IExchange>> GetBest<TFrom, TTo>()
			where TFrom : ICurrency
			where TTo : ICurrency;

		void Set<TFrom, TTo, TOn>(IConversion<TFrom, TTo, TOn> conversion)
			where TFrom : ICurrency
			where TTo : ICurrency
			where TOn : IExchange;
	}
}
